let express = require('express')
let mongoose = require('mongoose')
let router = express.Router()
let Goods = require('../models/goods')
let Users = require('../models/users')
mongoose.connect('mongodb://127.0.0.1:27017/goods')

// 监听数据库变化

// 成功与数据库创建连接
mongoose.connection.on('connected', function () { 
  console.log('mongoose connect  connected')
})

mongoose.connection.on('disconnected', function () {
  console.log('mongoose connect  disconnected')
})

mongoose.connection.on('error', function () {
  console.log('mongoose connect error')
})

router.get('/list',function(req,res,next){
  
  let params = req.query
  // 获取页数
  let page = parseInt( params.page );
  let sort = parseInt(params.sort);// -1 降序 1 是升序
  // 每页几条
  let pageSize = parseInt(params.pageSize);
  // 跳过多少条
  let skip = (page-1) * pageSize;
  // 查询条件
  let conditions = {};
  // 过滤条件
  let priceLever = params.priceLever;
  let priceGt ='', priveLte = '';
  console.log(priceLever)
  if(priceLever != 'all'){
    switch(priceLever){
      case '0': priceGt = 0 ;priveLte = 500 ; break;
      case '1': priceGt = 500 ;priveLte = 1000 ; break;
      case '2': priceGt = 1000 ;priveLte = 2000 ; break;
      case '3': priceGt = 2000 ;priveLte = 5000 ; break;
    }
    conditions = {
      'salePrice': {
        $gte: priceGt,
        $lte: priveLte
      }
    }
  }
  let GoodsModel = Goods.find(conditions).skip(skip).limit(pageSize)
  GoodsModel.sort({'salePrice': sort})
  // 请求收到的时候查看数据库中的数据
  GoodsModel.exec(function (err, data) {  
    if(err){
      res.json({
        msg: err.message,
        status: '1'
      })
    }else{
      res.json({
        limit: data.length,
        message: '', //
        result : { //
          count: data.length, 
          list: data
        },
        status: '0', //
        data
      })
    }
  })
})
// 添加购物车
router.post('/addCart', function (req, res, next) {  
  let productId =  req.body.productId;
  let userId = '100000077';
  // 1.查询用户信息
  Users.findOne({userId: userId}, function (err, userDoc) {  
    if (err) {
      return res.json({
        msg: err.message,
        status: 1
      })
    }
    // 获取用户购物车列表
    
    let goodsItem = '';
    userDoc.cartList.forEach(item => {
      // 如果存在就让当前商品++
      if(item.productId === productId){
        goodsItem = item ;
        item.productNum++;
      }
    })
     // 判断购物车有没有这个商品 有就直接保存
    if(goodsItem){
      // 用户数据.save 不是模型save
      userDoc.save(function (err,doc) {  
        if(err){
          return res.json({
            msg: err.message,
            status: 1
          })
        }
        res.json({
          msg:'添加成功',
          status: '0',
          result: 'suc'
        })
      })
    }else{
      // 2. 查询商品信息 判断用户是否存在商品 不存在就push存在就添加
      Goods.findOne({productId:productId}, (err, productDoc) =>{
        if (err) {
          return res.json({
            msg: err.message,
            status: 1
          })
        }
        // 没有这件商品 初始化商品数量. 选中状态默认为true
        productDoc.productNum = '1';
        productDoc.checked = '1' ;
        // 在cartList中 Push数据
        userDoc.cartList.push(productDoc)
        // 返回的数据直接保存
        userDoc.save(function (err,doc) {
          if(err){
            return res.json({
              msg: err.message,
              status: 1
            })
          }
          res.json({
            msg:'添加成功',
            status: '0',
            result: 'suc'
          })
        })
      })
    }
  })
})

module.exports = router